import mountElement from './mountElement'
import updateNodeElement from './updateNodeElement';
/**
 * 创建真实 DOM 对象
 * @param {*} virtualDOM 
 */
export default function createDOMElement (virtualDOM) {
  let newElement = null
  if (virtualDOM.type === 'text') {
    // 文本节点
    newElement = document.createTextNode(virtualDOM.props.textContent)
  } else {
    // 元素节点
    newElement = document.createElement(virtualDOM.type)
    updateNodeElement(newElement, virtualDOM)
  }
  // 存储当前的 VirtualDOM 对象，用于更新比对时
  newElement._virtualDOM = virtualDOM
  // 递归创建子节点
  virtualDOM.children.forEach(child => {
    mountElement(child, newElement)
  })
  // 判断 virtualDOM 中的 ref 是否存在，如果存在则直接调用
  if (virtualDOM.props && virtualDOM.props.ref) {
    virtualDOM.props.ref(newElement)
  }
  return newElement
}